/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package is.interfaces;

import is.interfaces.Bean;
import is.model.exceptions.ObjectNotFoundException;
import java.sql.SQLException;
import java.util.List;

/**
 *
 * @author aspr0
 */
public interface Dao<Datatype>
{

    Integer count() throws SQLException;

    Integer create() throws SQLException;

    Integer delete() throws SQLException;

    void objectExists() throws SQLException, ObjectNotFoundException;

    Datatype retrieve() throws SQLException;

    List<Datatype> retrieveMultiple(Integer offset, Integer limit, Integer orderByIndex) throws SQLException;

    /**
     *
     * @param strict whether to provide strict 'where' match
     * @return
     * @throws SQLException
     */
    List<Datatype> search(Boolean strict) throws SQLException;

    void setInitialBean(Datatype initialBean);

    Integer update() throws SQLException;

}
